from typing import List, Dict, Optional, Literal, Any, Union
from pydantic import BaseModel

class Message(BaseModel):
    sender: str
    content: str
    mentions: List[str] = []
    is_group: bool = False
    group_name: Optional[str] = None
    reply_config: Dict[str, Any] = {}

class ReplyDecision(BaseModel):
    content: str
    strategy: Literal["broadcast", "private", "ignore"] 
    mentions: List[str] = []
    priority: int = 0
    reason: str = ""